package com.xbongbong.paas.service;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.pro.fineclue.pojo.dto.EnterpriseDetailGetDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueClueReleaseDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueConsumptionDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueCustomerDataDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueGetEnableBuinessDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueGetUseDosageDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueMoreConsumptionDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueOfficiallyOpenDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueOpenTrialDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineCluePageGetDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueRedisTypeDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueUpdateDosageDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueUpdateListDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueUserDTO;
import com.xbongbong.pro.fineclue.pojo.dto.FineClueUserSurplusUsageDTO;
import com.xbongbong.pro.fineclue.pojo.dto.TransferClueStatusDTO;
import com.xbongbong.pro.fineclue.pojo.vo.EnterpriseDetailGetVO;
import com.xbongbong.pro.fineclue.pojo.vo.FineClueConsumptionVO;
import com.xbongbong.pro.fineclue.pojo.vo.FineClueGetEnableBuinessVO;
import com.xbongbong.pro.fineclue.pojo.vo.FineClueMsgVO;
import com.xbongbong.pro.fineclue.pojo.vo.FineCluePageGetVO;
import com.xbongbong.pro.fineclue.pojo.vo.FineClueUserListVO;
import com.xbongbong.pro.fineclue.pojo.vo.FineClueUserSurplusUsageVO;
import com.xbongbong.pro.fineclue.pojo.vo.TransferClueStatusVO;

/**
 * @Author mingliang
 * @Description 精线索工商查询与搜客
 **/
public interface FineClueService {
    /**
     * @param enterpriseDetailGetDTO
     * @Author mingliang
     * @Description 通过精线索接口查询企业详情
     **/
    EnterpriseDetailGetVO enterpriseGetInfo(EnterpriseDetailGetDTO enterpriseDetailGetDTO) throws XbbException;

    /**
     * @param fineClueUserDTO
     * @Author mingliang
     * @Description 获得精线索坐席
     **/
    FineClueUserListVO getDepUserList(FineClueUserDTO fineClueUserDTO) throws XbbException;

    /**
     * @Author mingliang
     * @Description 批量修改坐席
     * @Date 2021/10/26 19:40
     **/
    FineClueMsgVO batchUpdateUserStaff(FineClueUpdateListDTO fineClueUpdateListDTO) throws XbbException;

    /**
     * @param enterpriseDetailGetDTO
     * @Author mingliang
     * @Description 查询企业列表
     * @Date 2021/11/1 17:08
     **/
    EnterpriseDetailGetVO enterpriseGetList(EnterpriseDetailGetDTO enterpriseDetailGetDTO) throws XbbException;

    /**
     * @param fineClueUpdateDosageDTO
     * @Author mingliang
     * @Description 批量设置用户用量
     * @Date 2021/11/1 17:08
     **/
    FineClueMsgVO batchUpdateUserDosage(FineClueUpdateDosageDTO fineClueUpdateDosageDTO) throws XbbException;

    /***
     * @description:  用量查询
     * @param: fineClueConsumptionDTO
     * @return: com.xbongbong.pro.fineclue.pojo.vo.FineClueConsumptionVO
     * @author: zhushuainan
     * @date: 2021/11/5 14:12
     */

    FineClueConsumptionVO getFineClueConsumption(FineClueConsumptionDTO fineClueConsumptionDTO)throws XbbException;

    /***
     * @description: 获取精线索页面Url
     * @param: fineCluePageGetDTO
     * @return: com.xbongbong.pro.fineclue.pojo.vo.FineCluePageGetVO
     * @author: zhushuainan
     * @date: 2021/11/9 15:55
     */
    FineCluePageGetVO getFineCluePage(FineCluePageGetDTO fineCluePageGetDTO)throws XbbException;


    /**
     * @Author mingliang
     * @Description 线索转客户
     * @Date 2021/11/8 14:09
     * @param clueCustomerDataDTO
     **/
    FineClueMsgVO transitionCustomerOrClue(FineClueCustomerDataDTO clueCustomerDataDTO) throws XbbException;

    /**
     * @Author mingliang
     * @Description 线索转客户将formid等信息存储到redis中
     * @Date 2021/11/8 14:09
     * @param fineClueRedisTypeDTO
     **/
    FineClueMsgVO setTransitionInfo(FineClueRedisTypeDTO fineClueRedisTypeDTO) throws XbbException;

    /***
     * @description:  开通搜客或工商查询试用
     * @param: fineClueOpenTrialDTO
     * @return: com.xbongbong.pro.fineclue.pojo.vo.FineClueMsgVO
     * @author: zhushuainan
     * @date: 2021/11/17 12:38
     */
    FineClueMsgVO openSoukeOrCompanyQueryTrial(FineClueOpenTrialDTO fineClueOpenTrialDTO) throws XbbException;

    /***
     * @description:  解锁联系方式时在用量表里新增一条记录
     * @param: fineClueUnlockDataDTO
     * @return: com.xbongbong.pro.fineclue.pojo.vo.FineClueMsgVO
     * @author: zhushuainan
     * @date: 2021/11/22 10:49
     */
    FineClueMsgVO addUseDosageRecord(FineClueCustomerDataDTO fineClueCustomerDataDTO)throws XbbException;

    /***
     * @description: 彻底删除释放线索
     * @param: fineClueClueReleaseDTO
     * @return: com.xbongbong.pro.fineclue.pojo.vo.FineClueMsgVO
     * @author: zhushuainan
     * @date: 2021/11/30 14:27
     */
    FineClueMsgVO releaseClue(FineClueClueReleaseDTO fineClueClueReleaseDTO)throws XbbException;
    
    /*** 
     * @description: 返回给第三方用户个人的剩余用量 
     * @param: fineClueUserSurplusUsageDTO 
     * @return: com.xbongbong.pro.fineclue.pojo.vo.FineClueUserSurplusUsageVO 
     * @author: zhushuainan
     * @date: 2021/12/6 16:18
     */
    FineClueUserSurplusUsageVO getSurplusUsage(FineClueUserSurplusUsageDTO fineClueUserSurplusUsageDTO)throws XbbException;

    /***
     * @description: 开通正式套餐（搜客/工商查询）
     * @param: fineClueOfficiallyOpenDTO
     * @return: com.xbongbong.pro.fineclue.pojo.vo.FineClueMsgVO
     * @author: zhushuainan
     * @date: 2021/12/13 11:13
     */
    FineClueMsgVO openOfficialVersion(FineClueOfficiallyOpenDTO fineClueOfficiallyOpenDTO)throws XbbException;
    
    
    /**
     * @Author chenshan
     * @Description 获取当前开启的应用
     * @Date 2021/11/8 14:09
     * @param fineClueGetEnableBuinessDTO
     **/
    FineClueGetEnableBuinessVO getEnableBuiness(FineClueGetEnableBuinessDTO fineClueGetEnableBuinessDTO) throws XbbException;

    /***
     * @description: 根据三方推送的解锁数据，xbb存储解锁记录记录用量
     * @param: fineClueGetUseDosageDTO
     * @return: com.xbongbong.pro.fineclue.pojo.vo.FineClueMsgVO
     * @author: zhushuainan
     * @date: 2021/12/28 15:49
     */
    FineClueMsgVO getUseDosage(FineClueGetUseDosageDTO fineClueGetUseDosageDTO) throws XbbException;

    /***
     * @description: 用量不够时，点击获取更多用量 ，发送一条销售机会
     * @param: baseDTO
     * @return: com.xbongbong.pro.fineclue.pojo.vo.FineClueMsgVO
     * @author: zhushuainan
     * @date: 2022/1/10 17:33
     */
    FineClueMsgVO getMoreConsumption(BaseDTO baseDTO) throws XbbException;
    
    /*** 
     * @description: 获取转线索任务状态 
     * @param: transferClueStatusDTO 
     * @return: com.xbongbong.pro.fineclue.pojo.vo.TransferClueStatusVO 
     * @author: zhushuainan
     * @date: 2022/2/18 12:46
     */
    TransferClueStatusVO getTransferStatus(TransferClueStatusDTO transferClueStatusDTO) throws XbbException;
}
